package com.browsesoft.baseadapter;

import java.util.Hashtable;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.browsesoft.htmlcomponent.HTMLBasicComponent;
import com.browsesoft.htmlcomponent.HTMLTableModel;

/**
 * 打印model 负责把组件中需要的内容打印出来
 */
public class PrintTableModel implements HTMLTableModelAdapter {
	/**
	 * 要打印的组件
	 */
	HTMLBasicComponent component;

	/**
	 * 打印组件对应的model
	 */

	PrintAbleTableModel model;

	/**
	 * 默认构造
	 */

	public PrintTableModel() {
	}

	/**
	 * 得到列数
	 * 
	 * @return 列数
	 */
	public int getColumnCount() {
		return model.getColumnCount();
	}

	/**
	 * 得到列的名称
	 * 
	 * @param index
	 *            列号
	 * @return 列的名称
	 */
	public String getColumnName(int index) {
		return model.getColumnName(index);
	}

	/**
	 * 得到行数
	 * 
	 * @return 行数
	 */
	public int getRowCount() {
		return model.getPrintList().size();
	}

	/**
	 * 查询条件
	 * 
	 * @param condition
	 *            条件
	 */
	public void setCondition(Hashtable condition) {
	}

	/**
	 * 设置条件
	 */
	public void setCondition(String condition) {
	}

	/**
	 * 修改单元值
	 */
	public void modifyCellValue(Element td, Document doc, int row, int col) {
		if (col < this.model.getColumnCount()) {
			if (this.model instanceof HTMLTableModel) {
				((HTMLTableModel) this.model)
						.modifyCellValue(td, doc, row, col);
			}
		}
	}

	/**
	 * 得到某列的操作类型
	 * 
	 * @return 类型
	 */
	public String getType(int col) {
		return "td";
	}

	/**
	 * 初始化model
	 */
	public void init(HttpServletRequest request) throws Exception {
		// 得到做打印的组件名称
		String compid = request.getParameter("compid");
		// 根据组件ID号得到MODEL
		model = (PrintAbleTableModel) HTMLBasicComponent.getComponentByID(
				request, compid).getModel();
	}

	/**
	 * 处理用户请求
	 * 
	 * @param request
	 *            客户端请求
	 */
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
	}

	/**
	 * 设置模型所对应的组件
	 * 
	 * @param component
	 *            对应的组件
	 */
	public void setComponent(HTMLBasicComponent component) {
	}

	/**
	 * 由Component决定需要Model处理的元素内容，在Component的updateElement()方法中调用
	 */
	public void updatePageElement(HTMLBasicComponent c) throws Exception {
	}
}